Validate Transfer
The Validate Transfer Eligibility API allows the originating bank to pre-validate some payment details before sending the payment to Visa B2B Connect. This API also validates that the Commercial Customer Beneficiary can be paid through the Visa B2B Connect network and sends a positive or negative response back. This API minimizes the potential for exception scenarios in the Transfer process.
Method: POST
{{URL}}/jsonrpc
Headers
Name | Value |
---|---|
Content-Type | application/json |
Example
Payload Parameters
Parameter | Description |
---|---|
id Mandatory | String Unique ID for each request |
jsonrpc Mandatory | String JSON RPC VERSION - should be "2.0" |
method Mandatory | String Method Name - should be "VisaService.ValidateTransfer" |
params Mandatory | Object |
api Mandatory | Object |
credential Mandatory | String API credential provided by NetXD |
signature Mandatory | String Signature of the digitally signed payload |
payload Mandatory | Object |
currencyOfTransfer Mandatory | String Currency of Instructed Amount (Valid supported USI 4217 3-character currency code). Field length: 3 characters |
creditorAccount Mandatory | Object |
accountNumber Conditional Mandatory | String Creditor Account Number Account Number is mandatory if creditor bank's Enterprise ID or Iban is not provided |
debtorAccount Mandatory | Object |
enterpriseId Conditional Mandatory (Mandatory if accountNumber is not provided) | String Enterprise ID of Beneficiary Company (Creditor). Enterprise ID is assigned to each network-enabled company Enterprise ID is mandatory if debtor bank's Account Number or Iban is not provided |
accountNumber Conditional Mandatory (Mandatory if enterpriseId is not provided) | String Account number of the debtor |
creditorAgent Mandatory | Object |
bic Mandatory | String SWIFT BIC of Beneficiary Bank (Creditor Agent) |
- cURL
- C#
- Go
- NodeJs
curl --location --globoff '{{URL}}/jsonrpc' \
--header 'Content-Type: application/json' \
--data '{"id":"1","jsonrpc":"2.0","method":"VisaService.ValidateTransfer","params":{"api":{"credential":"Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmNzQ4ZGQ4ZWY4NWI5NWQxY2RlNDE5","signature":"{{signature}}"},"payload":{"currencyOfTransfer":"JPY","creditorAccount":{"accountNumber":"23423423423"},"debtorAccount":{"enterpriseId":"V-USA-USD-10039281-100020663-001","accountNumber": "123456799975756"},"creditorAgent":{"bic":"TCBWUS10"}}}}'
var options = new RestClientOptions("{{URL}}/jsonrpc")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Post);
request.AddHeader("Content-Type", "application/json");
var body = @"{
" + "\n" +
@" ""id"": ""1"",
" + "\n" +
@" ""jsonrpc"": ""2.0"",
" + "\n" +
@" ""method"": ""VisaService.ValidateTransfer"",
" + "\n" +
@" ""params"": {
" + "\n" +
@" ""api"": {
" + "\n" +
@" ""credential"": ""Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmNzQ4ZGQ4ZWY4NWI5NWQxY2RlNDE5"",
" + "\n" +
@" ""signature"": ""{{signature}}""
" + "\n" +
@" },
" + "\n" +
@" ""payload"": {
" + "\n" +
@" ""currencyOfTransfer"": ""JPY"",
" + "\n" +
@" ""creditorAccount"": {
" + "\n" +
@" ""accountNumber"": ""23423423423""
" + "\n" +
@" },
" + "\n" +
@" ""debtorAccount"": {
" + "\n" +
@" ""enterpriseId"": ""V-USA-USD-10039281-100020663-001"",
" + "\n" +
@" ""accountNumber"": ""123456799975756""
" + "\n" +
@" },
" + "\n" +
@" ""creditorAgent"": {
" + "\n" +
@" ""bic"": ""TCBWUS10""
" + "\n" +
@" }
" + "\n" +
@" }
" + "\n" +
@" }
" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "{{URL}}/jsonrpc"
method := "POST"
payload := strings.NewReader(`{`+"
"+`
"id": "1",`+"
"+`
"jsonrpc": "2.0",`+"
"+`
"method": "VisaService.ValidateTransfer",`+"
"+`
"params": {`+"
"+`
"api": {`+"
"+`
"credential": "Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmNzQ4ZGQ4ZWY4NWI5NWQxY2RlNDE5",`+"
"+`
"signature": "{{signature}}"`+"
"+`
},`+"
"+`
"payload": {`+"
"+`
"currencyOfTransfer": "JPY",`+"
"+`
"creditorAccount": {`+"
"+`
"accountNumber": "23423423423"`+"
"+`
},`+"
"+`
"debtorAccount": {`+"
"+`
"enterpriseId": "V-USA-USD-10039281-100020663-001",`+"
"+`
"accountNumber": "123456799975756"`+"
"+`
},`+"
"+`
"creditorAgent": {`+"
"+`
"bic": "TCBWUS10"`+"
"+`
}`+"
"+`
}`+"
"+`
}`+"
"+`
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
var https = require('follow-redirects').https;
var fs = require('fs');
var options = {
'method': 'POST',
'hostname': '{{URL}}',
'path': '/jsonrpc',
'headers': {
'Content-Type': 'application/json'
},
'maxRedirects': 20
};
var req = https.request(options, function (res) {
var chunks = [];
res.on("data", function (chunk) {
chunks.push(chunk);
});
res.on("end", function (chunk) {
var body = Buffer.concat(chunks);
console.log(body.toString());
});
res.on("error", function (error) {
console.error(error);
});
});
var postData = JSON.stringify({
"id": "1",
"jsonrpc": "2.0",
"method": "VisaService.ValidateTransfer",
"params": {
"api": {
"credential": "Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmNzQ4ZGQ4ZWY4NWI5NWQxY2RlNDE5",
"signature": "{{signature}}"
},
"payload": {
"currencyOfTransfer": "JPY",
"creditorAccount": {
"accountNumber": "23423423423"
},
"debtorAccount": {
"enterpriseId": "V-USA-USD-10039281-100020663-001",
"accountNumber": "123456799975756"
},
"creditorAgent": {
"bic": "TCBWUS10"
}
}
}
});
req.write(postData);
req.end();
Body
{
"id": "1",
"jsonrpc": "2.0",
"method": "VisaService.ValidateTransfer",
"params": {
"api": {
"credential": "Basic c3VwcG9ydCsxQG5ldHN5cy1pbmMuY29tOjM5ZDYxOGJkNTVmNzQ4ZGQ4ZWY4NWI5NWQxY2RlNDE5",
"signature": "{{signature}}"
},
"payload": {
"currencyOfTransfer": "JPY",
"creditorAccount": {
"accountNumber": "23423423423"
},
"debtorAccount": {
"enterpriseId": "V-USA-USD-10039281-100020663-001",
"accountNumber": "123456799975756"
},
"creditorAgent": {
"bic": "TCBWUS10"
}
}
}
}
Response: 200
Response Parameters
Parameter | Description |
---|---|
id | String Unique ID for each request |
jsonrpc | String JSON RPC VERSION - should be "2.0" |
result | Object |
debtorEnterpriseId | String Enterprise ID of Payer Company (Debtor). Enterprise ID is assigned to each network-enabled company |
responseList | Array Enterprise ID of Payer Company (Creditor). Enterprise ID is assigned to each network-enabled company |
reasonCode | String Reason Code for Transfer |
reasonDesc | String Reason Description for Transfer |
{
"id": "1",
"jsonrpc": "2.0",
"result": {
"debtorEnterpriseId": "V-USA-USD-10039281-100020663-001",
"responseList": [
{
"reasonCode": "SU10",
"reasonDesc": " Payment eligibility validation success."
}
]
}
}